package com.zmn.oms.dubbo.dto.common.orderpay;

import com.zmn.oms.dubbo.dto.common.work.BaseRequestDIO;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.util.Map;

/**
 * 类描述：支付
 *
 * @author heciqi
 * @date 2018/11/10 11:24
 */
@Data
public class OrderPayDIO extends BaseRequestDIO {

	/**
	 * 渠道id
	 */
	private Integer channelId;

	/**
	 * 支付渠道
	 *
	 * @see com.zmn.pay.common.constant.PayConsts#PAY_CHANNEL_PLATFORM_ALIPAY
	 */
	@NotNull
	private Integer payChannelId;

	/**
	 * 支付类型
	 *
	 * @see com.zmn.pay.common.constant.PayConsts#PAY_TYPE_QR
	 */
	@NotNull
	private Integer payType;

	/**
	 * 目标支付渠道
	 * @see com.zmn.pay.common.constant.PayConsts#PAY_TYPE_QR
	 */
	private Integer payTargetChannelId;

	/**
	 * 目标渠道支付方式
	 * @see com.zmn.pay.common.constant.PayConsts#PAY_TYPE_QR
	 */
	private Integer payTargetType;

	/**
	 * 待支付金额（前端传值，待支付的金额，用于一致性校验）
	 */
	private Integer toPayAmount;

	/**
	 * 微信小程序appId，微信小程序支付必填
	 */
	private String weixinAppId;

	/**
	 * H5支付，同步通知的URL地址
	 */
	private String h5PayReturnUrl;

	/**
	 * 微信支付-终端IP
	 * app和H5支付，提交的机器ip
	 * APP和网页支付提交用户端ip，Native支付填调用微信支付API的机器IP。
	 */
	private String weixinH5PayCreateIp;

	/**
	 * 微信openid，微信公众号或小程序支付提交openid
	 * 或
	 * 支付宝用户pid，小程序支付
	 */
	private String openId;

	/**
	 * 是否花呗分期
	 * 1不分期，2 分期
	 * @see com.zmn.consts.GlobalConsts#YES、#NO
	 */
	private Integer hbStage;

	/**
	 * 花呗分期期数
	 * 仅支持(3,6,12期)
	 */
	private Integer hbStageNum;

	/**
	 * 花呗分期是否卖家承担手续
	 * 1用户承担，2 卖家承担
	 * @see com.zmn.consts.GlobalConsts#YES、#NO
	 */
	private Integer hbStageSellerCommission;

	/**
	 * 银联app支付，目标平台
	 * 微信：wx.unifiedOrder
	 * 支付宝：trade.precreate
	 * 全民付：qmf.order
	 * 银联云闪付（走银联全渠道）：uac.appOrder
	 */
	private String chinaumsPayMsgType;

	/**
	 * accessToken（百度，快手支付）
	 * 用于百度，快手支付-查询，退款，关闭交易
	 */
	private String accessToken;

	/**
	 * 代付 1: 非代付  2：代付
	 */
	private Integer agentType;

	/**
	 * 业务透传数据
	 */
	private Map<String, String> extData;

	/**
	 * 操作者类型
	 */
	protected Integer operatorType;

	/**
	 * 操作者ID
	 */
	protected Long operatorId;

	/**
	 * 操作者
	 */
	protected String operator;

	/**
	 * 验收id
	 */
	private Long acceptanceId;

	/**
	 * 支付明细id
	 */
	private Long orderPayId;
}
